iT邦幫忙

2023 iThome 鐵人賽

DAY 16
0
AI & Data

30天深度學習-從零到英雄系列 第 16

工欲善其事必先利其器-訓練神經網路的小細節

  • 分享至 

  • xImage
  •  

訓練神經網路是一個複雜的過程,稍微調整一個參數,訓練出來的結果與過程中的效率就不會不一樣,所以我們在訓練前需要仔細思考各種因素,確保可以成功地建立和訓練一個有效的模型。那有哪些是值得我們注意的地方呢?

  1. 定義問題和目標:
    先知道要解決什麼問題,並且設定目標去達成,最好還要有預期結果,才能與架設出來的神經網路做比較。

  2. 隱藏層的設定:
    雖然我們知道增加一層隱藏層學習能力就可以變強,但也不是說可以無上限的增加就會變成超級世界無敵厲害。有時候添加過的的隱層藏會使得反向傳播的效率變差,導致學習素速度下降。神經網路的隱藏層會根據問題和數據來決定,並沒有一個通用的標準答案(少於1000個樣本,通常從2層隱藏層開始架設。1000-10000個樣本,可以考慮使用2到4個隱藏層)。有一些考慮因素可以給大家點建議:

  • 問題複雜度:較複雜的問題可能需要更深的網路來擷取和學習特徵。

  • 數據量:如果您擁有大量的數據,通常可以考慮使用較多隱藏層來處理。

  • 資源:越多的隱藏層就需要越厲害的計算資源(例如GPU)和更長的訓練時間。

  • 維度和特徵:數據的維度和特徵也會影響架設隱藏層的層數。對於高維數據,就可能需要更多的隱藏層來處理。

  1. 各層神經元的數量:
    隱藏層中神經元的數量是另一個重要的超參數(不是由模型自動學習而是由人為設定的參數)它會影響神經網路的容量和性能。神經元太多,神經網路會太複雜、計算速度變慢;神經元太少,架設的神經網路跑出來的準確度可能會受限。這邊也是有一些考慮因素可以給大家點建議:
  • 第一隱藏層的神經元數量:通常設計第一個隱藏層,神經元數量大概可以設定成輸入特徵數量的1到2倍。這樣可以幫助模型擷取輸入特徵的一些基本模式。

  • 後續隱藏層的神經元數量:隨著神經網路的深度增加,一般來說,可以逐漸減少隱藏層的神經元數量。我們可以將神經元的數量以2倍的數量來增減。例如:神經元數量從32個增加到64個後,模型準確率有明顯改善,那就增加。反之如果模型準確率不會因為從64降為32就降低,那就減少。

  • 若輸入的特徵不明顯,後面幾層的神經元設多一點較好,這樣可以幫助模型捕捉特徵。

  1. 超參數調整:
    調整學習率(learning rate)、批量大小(每次餵給模型跑的資料量)、隱藏層、各神經元的數量......等,以優化模型的性能。

  2. 損失函數和優化器:
    選擇適當的損失函數:均方誤差、交叉熵損失(我們之前在損失什麼?損失函數有講到)來衡量模型的性能,並選擇適當的優化器:隨機梯度下降(梯度下降是一次投餵所有資料,隨機梯度下降(SGD)概念相同只是將訓練資料切分成小份然後批次處理)來更新模型參數。


介紹那麼多,明天我們就來寫改良後的神經網路吧!!


上一篇
反向傳播與學習率
下一篇
升級吧!神經網路模型
系列文
30天深度學習-從零到英雄30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言